package com.syuntax.trf.dao;

import org.hibernate.Session;

import java.util.List;


/**
 *
 * Created by wx on 2017/10/4.
 */
public interface BaseDao<T> {

    /**
     * 获取session
     * */
    Session getSession();

    /**
     * 保存
     * */
    void save(T entity);

    /**
     * 删除
     * */
    void delete(T entity);

    /**
     * 更新
     * */
    void update(T entity);

    /**
     * 根据主键查询
     * */
    T queryById(Long id);

    /**
     * 获取所有数据
     * */
    List<T> queryAll();

    /**
     * 通过hql查询
     * @param queryString hql语句
     * @param values 参数
     * */
    List<T> queryListByHql(String queryString, Object... values);

    /**
     * 通过对象查询
     * */
    List<T> queryByCon(T entity);

    /**
     * in 查询 ，某个字段在某个集合内
     * @param clazz 查询对象类型
     * @param filedName 字段名
     * @param values 集合
     * */
    List<T> queryByFiledIn(Class clazz, String filedName, List<? extends Object> values);
}
